A portion of the disclosure of this patent document contains material, which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by any one of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
This invention relates to the field of source code control for computer software development. More particularly, the present invention relates to a method and system for using virtual labels in a software configuration management system.
Typically in a large software development project, many programmers or programming groups work in conjunction with one another to develop a single piece of software. Moreover, in today""s distributed environment, using local area networks (LAN) as well as wide area networks (WAN), these various programmers and programming groups may be spread around the world.
In the past source code management software has been developed to provide an efficient means for coordinating and documenting the programming activities of such a development group. Early versions of these systems were the Source Code Control System (SCCS), and the Revision Control System (RCS). Other systems are described in detail in U.S. Pat. No. 5,481,722 issued Jan. 2, 1996 titled xe2x80x9cMethod and Apparatus for Merging Change Control Delta Structure Files of a Source Module from a Parent and a Child Development Environmentxe2x80x9d; in U.S. Pat. No. 4,912,637 issued Mar. 27, 1990 titled xe2x80x9cVersion Management Toolxe2x80x9d; and in U.S. Pat. No. 4,558,413 issued Dec. 10, 1985 titled xe2x80x9cSoftware Version Management System.xe2x80x9d The systems described in these patents focused primarily on the version control problem in the context of relatively small programs and system usage in relatively small local development groups.
In today""s hectic technology environment, software developers rush to get original product to market, followed by the inevitable xe2x80x9cbug-fixxe2x80x9d revisions, new feature releases, and extensive upgrades in a never ending cycle. Extensive use of Object Oriented Programming (OOP) techniques has added several levels of complexity to the configuration management task. Some large hardware companies, whose products"" sales are dependent on related software supporting new hardware features, add an additional pressure on software developers to rapidly modify existing software and produce new feature releases. Such shorter release cycles increase the need for development groups to engage in parallel development. However dividing project efforts among multiple developers or teams can lead to problems with software integration, reoccurring bugs, and lost changes. The requirement to maintain control of the source code in all of these releases amid continuing development is even more critical than in the past. In addition, such an environment of complex software, multiple platforms, globally dispersed development groups has required software configuration management systems which have process management functions embedded within the software configuration management tools. Process management functions are needed which include configuration control, version control, and also control of the procedures for sophisticated build/release functions, web object management functions and development and deployment functions.
Such requirements have led a number of system vendors such as; IBM(trademark). Computer Associates Inc.(trademark), Microsoft(trademark), and others, to develop comprehensive Version Management and build/release systems for software configuration management. One system which is widely popular today is the ClearCase(trademark) system by Rational Software Corp.(trademark) This ClearCase(trademark) system is used in the preferred embodiment of the present invention and is described in more detail below.
Any of these version control systems operate on the basic principle of: centrally storing the source code for a program along with descriptive information (in some cases called meta-data) containing a file name or label, date and time stamp information, version number, owner/developer, maintenance engineer, etc.; recording whenever someone checks out a copy of a given file; writing another completely new file whenever the file is checked back in to the repository, along with perhaps the delta changes between the checked-in version and the previous version. In some cases only the delta changes may be recorded in the new file. This scheme obviously leads to a rapid growth in the volume of data maintained in the configuration management system.
In many cases, as in the ClearCase(trademark) system used in the preferred embodiment, xe2x80x9crelease labelsxe2x80x9d are used as mnemonic identifiers (for example REL3.1.5) which can be attached to any version of a source code element. Attaching such labels is sometimes referred to as xe2x80x9clabelingxe2x80x9d or xe2x80x9ccreating a configuration snapshot.xe2x80x9d In an object oriented system such as the ClearCase(trademark) system, the labeling process involves creating a label type object and then creating an instance of the label type for the version object in question. This involves resources for creating the label objects as well as memory for storing the connections. In the case where copies of this source file reproduction system are replicated in a number of other development sites around the world, each new version written to any of these systems is immediately transmitted to all of the other global development sites. Thus the additional storage requirement for the new version and its labels are multiplied by the number of development sites maintained. Additionally the network traffic generated by the transmission of the new version to all of the development sites exacerbates already loaded networks. Finally, the design of many of these existing configuration control systems do have upper limits on the file sizes they are capable of handling, and while these limits are large, many users of these systems in today""s rapid release environment can approach these limits.
The technical problem addressed by the current invention relates to this issue of hardware resources needed for creating a label for each new release of a software system as well as the transmission load associated with the replication of the new label. There is a need to minimize the data written with each new release of a software system in order to conserve the available file storage resources as well as to minimize the data transmitted on the network attendant to a new release.
The present invention provides a solution to the needs described above through a system and method of using Virtual Labels in conjunction with an existing software configuration management system. The present invention minimizes the identification or meta-data which needs to be written to a source database or source repository whenever a label for a new snapshot configuration of source code needs to be created thereby minimizing the source database storage requirements and the network bandwidth for the transmission of distributed replications of the label. The virtual label system makes use of attribute data connected to a label object to record identification meta-data associated with a particular snapshot of the source code, whereby the attribute data is subsequently used for program builds/releases/new branch development without the need to have meta-data recorded in every component source file.
A system is disclosed for using virtual labels with an existing software configuration management mechanism, to generate a build tree for a desired program configuration. The system further contains the ability to generate a specification for a particular configuration made up of a multiplicity of individual source code file objects by using attributes connected to label objects instead of source code file objects.
Also disclosed is a method for using attributes related to a source code file label object to create a virtual label of a combination of source code files.
Still other embodiments of the present invention will become apparent to those skilled in the art from the following detailed description, wherein is shown and described only the embodiments of the invention by way of illustration of the best modes contemplated for carrying out the invention. As will be realized, the invention is capable of modification in various obvious aspects, all without departing from the spirit and scope of the present invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not restrictive.